import JSEncrypt from "jsencrypt/bin/jsencrypt";

export default {
  // code为被加密的数据
  getCode(code, key) {
    const encryptor = new JSEncrypt();
    encryptor.setPublicKey(key);
    // 获取加密后的code
    const cipher = encryptor.encrypt(code);
    return cipher;
  },
  getConcat() {

  },
  // 不支持深层对象！！！
  processDataToString(data) {
    return Object.keys(data).reduce((before, item) => before.concat(data[item]), '');
  },
  /**
   * 将请求参数调整为后台需要验证的请求体
   *
   * 将请求体所有参数传入后经过调整，新增两个后台加密
   * 验证的字段
   *
   * @param{Object} request     请求体的所有的参数
   * @param{String} publicKey           公钥
   * @return params
   */
  handleEncryptionRequest(request, publicKey) {
    const value = this.processDataToString(request.data);
    const cipher = this.getCode(value, publicKey);
    return {
      ...request,
      cipher,
      publicKey,
    };
  },
  // 跳转到云协作
  toCloud(crmUrl, param) {
    window.open(`${crmUrl}/${param}`);
  },
};
